D['A'..'Z'] : Bool. Trong d D[j] = true khi nguyn t da? di`u ch duo?c, false nu nguo?c la?i
Q[1..n] : t?p cac pha?n ung
B[1..n] : bool. B[i] = true nu pu Q[i] d dng, nguo?c la?i Q[i] = false
( Ta nh?n xet 1 pha?n ung nu co du`ng chi? du`ng 1 l`n )
T[1..n] : Dng d? luu vt trong d? quy
TU[1..n] : kt qua? tt nht
so_buoc_it_nhat : int . Ghi nh?n s buoc tt nht co th? tuong ung voi ma?ng ti uu.
Kho?i ta?o
so_buoc_it_nhat = 10000 

? qui :
Bien_doi(int lanthu)
{
    Neu lanthu<so_buoc_it_nhat // cn hi vo?ng ti`m ra kt qua? ti uu hon
    {
L?p la?i tt ca? cac phep bin d?i  trong Q : i = 1..n
            nu Q[i] chua xi ( B[i] = false)
  nu p du?ng Q[i] ln D[] c ta?o ra nguyn t moi ( Gia? su? Q[i] l a b -> c d)
            {
                T[lanthu] = i; // luu vt
                
                 Nu chat c d l vng th
                    {
                        // ra duo?c va`ng va` phuong an ti uu hon phuong an truoc d
                        copy T -> TU
                        so_buoc_it_nhat = lanthu  return
                    }else
                    // nguo?c la?i d? quy
                    {
                        // xi thu? Q[i]
                        B[i] = true;
                        D[c] = true; D[d] = true;

                        Bien_doi(lanthu+1);

                        // quay lui
                        B[i] = false;
                        D[c] = false; D[d] = false;
                    }
            }
    }
}

Nu d`u vo ko c vng th go?i hm : Bien_doi(1);
